#ifndef __SCENEMODELMANIPULATOR_H__
#define __SCENEMODELMANIPULATOR_H__

#include "BasicType/BasicType.h"
#include "SceneModel/SceneModel.h"

namespace GCRE {
	namespace SceneModel {
		class CSceneModelManipulator {
			public:
				CSceneModelManipulator();
				~CSceneModelManipulator();

				EntityPtr CreateEntity( const BasicType::SFString& strType );
				BasicType::SFBool SaveEntity( const EntityPtr& pEntity );
				EntityPtr FindEntityByID( BasicType::SFUInt id ) const;
				EntityPtr FindEntityByName( const BasicType::SFString& name ) const;

			protected:

			private:
				typedef std::hash_map<BasicType::SFUInt, EntityPtr>::const_iterator IDToEntityPtrIterator;
				typedef std::hash_map<BasicType::SFString, EntityPtr>::const_iterator StringToEntityPtrIterator;

				std::hash_map<BasicType::SFUInt, EntityPtr> m_IDToEntityPtr;
				std::hash_map<BasicType::SFString, EntityPtr> m_StringToEntityPtr;

		};
	}
}

#endif	//	__SCENEMODELMANIPULATOR_H__